package com.palominocia.capa_datos_nodo.modelo.seguridad;
import org.springframework.roo.addon.javabean.RooJavaBean;
import org.springframework.roo.addon.jpa.activerecord.RooJpaActiveRecord;
import org.springframework.roo.addon.tostring.RooToString;

import javax.persistence.ManyToOne;
import javax.validation.constraints.NotNull;

import java.util.Date;
import java.util.List;

import javax.persistence.Column;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.persistence.Transient;

import org.springframework.format.annotation.DateTimeFormat;

import com.palominocia.capa_datos_nodo.modelo.opciones.Habilitacion;

import javax.persistence.Enumerated;

@RooJavaBean
@RooToString
@RooJpaActiveRecord
public class TokenPasswordUsuario {

    /**
     */
    @ManyToOne
    private Usuario usuarioToken;

    /**
     */
    @NotNull
    @Column(name = "CODIGO_TOKEN", unique = true)
    private String codigoToken;

    /**
     */
    @NotNull
    @Temporal(TemporalType.TIMESTAMP)
    @DateTimeFormat(style = "M-")
    private Date fechaGeneracion;

    /**
     */
    @Temporal(TemporalType.TIMESTAMP)
    @DateTimeFormat(style = "M-")
    private Date fechaExpiracion;

    /**
     */
    @Enumerated
    private Habilitacion estadoToken;

    @Transient
	public static TokenPasswordUsuario findbyToken(String token) {
		return entityManager().createQuery("SELECT o FROM TokenPasswordUsuario o WHERE o.codigoToken =:codigoToken ",TokenPasswordUsuario.class)
				.setParameter("codigoToken", token)
				.getSingleResult();
	}
    @Transient
	public static List<TokenPasswordUsuario> findAllUsuarios(Usuario user_actual, Habilitacion habilitado) {
		return entityManager().createQuery("SELECT o FROM TokenPasswordUsuario o WHERE o.usuarioToken =:usuarioToken AND o.estadoToken=:estadoToken",TokenPasswordUsuario.class)
				.setParameter("usuarioToken", user_actual)
				.setParameter("estadoToken", habilitado)
				.getResultList();
	
    }
}
